﻿using System;
using System.Data;
using System.Linq;
using Onshi.POS.AccesoDatos;
using Onshi.POS.AccesoDatos.Interfaces;
using Onshi.POS.Modelo.Entidades;

namespace Onshi.POS.Repositorios
{
    public class RepositorioParametro : RepositorioEntidad<Parametro, Int32>
    {
        #region Constructores

        public RepositorioParametro()
            : base()
        {
            servicioDatosParametro = new ServicioDatosParametro();
        }

        #endregion

        #region Atributos

        private IServicioDatosParametro servicioDatosParametro;

        #endregion

        #region Propiedades

        private IServicioDatosParametro ServicioDatosParametro
        {
            get { return servicioDatosParametro; }
        }

        #endregion

        #region Metodos
        protected override Parametro FilaAEntidad(DataRow fila)
        {
            Parametro parametro = new Parametro();
            parametro.Id = (Int32)fila["IdParametro"];
            parametro.Nombre = (String)fila["Nombre"];
            parametro.Valor = (String)fila["Valor"];
            parametro.Observacion = (String)fila["Observacion"];
            return parametro;
        }

        public Parametro DevolverPorNombre(String nombre)
        {
            Parametro entidad = (from Parametro item in entidades where item.Nombre == nombre select item).FirstOrDefault();
            if (entidad == null)
            {
                using (DataSet ds = ServicioDatosParametro.Parametro_DevolverPorNombre(nombre))
                {
                    if (ds.Tables[0].Rows.Count != 0)
                    {
                        entidad = FilaAEntidad(ds.Tables[0].Rows[0]);
                        entidades.Add(entidad);
                    }
                }
            }
            return entidad;
        }

        public override Parametro DevolverPorId(int id)
        {
            Parametro entidad = (from Parametro item in entidades where item.Id == id select item).FirstOrDefault();
            if (entidad == null)
            {
                using (DataSet ds = ServicioDatosParametro.Parametro_DevolverPorId(id))
                {
                    if (ds.Tables[0].Rows.Count != 0)
                    {
                        entidad = FilaAEntidad(ds.Tables[0].Rows[0]);
                        entidades.Add(entidad);
                    }
                }
            }
            return entidad;
        }
        #endregion
    }
}
